--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / settings / settingsConfigService.js
Displaying Raw • Download
meshchatx/src/frontend/js/settings/settingsConfigService.js db40ee7b0256e85be81753b7dcc9f7ee2c556e34 (db40ee7b) Text, 2.19 KB
T8b949e/**
* Pure helpers and HTTP-backed config load/patch for settings UI.
*
* @param {unknown} v
* @returns {number|null}
*/
Tff7b72export Tff7b72function Te6edf3numOrNullTb4b4b4(Te6edf3vTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72=== Tff7b72null Tff7b72|| Te6edf3v Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3v Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tff7b72return Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4) Tff7b72? Te6edf3n Tff7b72: Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e/**
* Normalizes hex color fields on a config object in place.
*
* @param {Record<string, unknown>} config
*/
Tff7b72export Tff7b72function Te6edf3sanitizeColorConfigFieldsTb4b4b4(Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3configTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3hex6 Tff7b72= Tb4b4b4(Te6edf3valueTb4b4b4, Te6edf3fallbackTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3value Tff7b72== Tff7b72null Tff7b72|| Te6edf3value Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3fallbackTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3value Tff7b72=== Ta5d6ff"string" Tff7b72&& Ta5d6ff/^#[0-9A-Fa-f]{6}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valueTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3valueTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3fallbackTb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3configTb4b4b4.Te6edf3banished_color Tff7b72= Te6edf3hex6Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3banished_colorTb4b4b4, Ta5d6ff"#dc2626"Tb4b4b4)Tb4b4b4;
Te6edf3configTb4b4b4.Te6edf3message_outbound_bubble_color Tff7b72= Te6edf3hex6Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3message_outbound_bubble_colorTb4b4b4, Ta5d6ff"#4f46e5"Tb4b4b4)Tb4b4b4;
Te6edf3configTb4b4b4.Te6edf3message_failed_bubble_color Tff7b72= Te6edf3hex6Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3message_failed_bubble_colorTb4b4b4, Ta5d6ff"#ef4444"Tb4b4b4)Tb4b4b4;
Te6edf3configTb4b4b4.Te6edf3message_waiting_bubble_color Tff7b72= Te6edf3hex6Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3message_waiting_bubble_colorTb4b4b4, Ta5d6ff"#e5e7eb"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3inbound Tff7b72= Te6edf3configTb4b4b4.Te6edf3message_inbound_bubble_colorTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inbound Tff7b72== Tff7b72null Tff7b72|| Te6edf3inbound Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3configTb4b4b4.Te6edf3message_inbound_bubble_color Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3inbound Tff7b72=== Ta5d6ff"string" Tff7b72&& Ta5d6ff/^#[0-9A-Fa-f]{6}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3inboundTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3configTb4b4b4.Te6edf3message_inbound_bubble_color Tff7b72= Te6edf3inboundTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3configTb4b4b4.Te6edf3message_inbound_bubble_color Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e/**
* @param {{ get: (path: string) => Promise<{ data?: { config?: object } }> }} api
* @returns {Promise<object|null>}
*/
Tff7b72export Tff7b72async Tff7b72function Te6edf3fetchMergedConfigTb4b4b4(Te6edf3apiTb4b4b4, Te6edf3baseConfigTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Tb4b4b4...Te6edf3baseConfigTb4b4b4, Tb4b4b4...Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3config Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {object} partial
* @param {{ patch: (path: string, data: object) => Promise<{ data: { config: object } }> }} api
* @returns {Promise<object>}
*/
Tff7b72export Tff7b72async Tff7b72function Te6edf3patchServerConfigTb4b4b4(Te6edf3partialTb4b4b4, Te6edf3apiTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Te6edf3partialTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────